package pe.com.bn.sach.dao.impl;

import java.util.HashMap;
import java.util.List;
import com.ibatis.sqlmap.client.SqlMapClient;


import pe.com.bn.sach.dao.PersonaDAO;
import pe.com.bn.sach.domain.Bnchf01Persona;

import pe.com.bn.sach.domain.Bnchf12Familiar;

 
public class PersonaImpl  implements PersonaDAO  {

//	private static Logger depurador = Logger.getLogger(PersonaImpl.class.getName());
	 
	 
	protected SqlMapClient sqlMap = null;
	
	public void setSqlMap(SqlMapClient sqlMap) {
		this.sqlMap = sqlMap;
	}
	
	public Long MAXIDPERSONA() throws Exception{    
        try {
        	
        	String id = (String)sqlMap.queryForObject("sqlPersona.MaxPersona");
            if(id==null)
                  id = "1";
         
             return new Long(id);
        } catch (Exception e) {
            throw new Exception("Error en PersonaImpl de MAXIDPERSONA: " + e);
        }
    }
	
	
	
	public int personasoltera(Long idCliente) throws Exception{    
		
		HashMap hm  = new HashMap();
	    try {
        	hm.put("IdCliente",idCliente);
        	String id = (String)sqlMap.queryForObject("sqlPersona.PersonaSolteraPrecalificacion",hm);
            if(id==null)
                  id = "0";
             return Integer.parseInt(id);
        } catch (Exception e) {
            throw new Exception("Error personasoltera " + e);
        }
    }
	
	
	public int personasoltera(Bnchf01Persona Bnchf01Persona) throws Exception{    
		
		HashMap hm  = new HashMap();
	    try {
	    
        	
        	String id = (String)sqlMap.queryForObject("sqlPersona.PersonaSoltera",Bnchf01Persona);
            if(id==null)
                  id = "0";
             return Integer.parseInt(id);
        } catch (Exception e) {
            throw new Exception("Error personasoltera " + e);
        }
    }
	
	
	
	public int stadoexpedientesEnTramite(Bnchf01Persona Bnchf01Persona) throws Exception{    
		

        try {
        	
        	String id = (String)sqlMap.queryForObject("sqlPersona.stadoexpedientesEnTramite",Bnchf01Persona);
            if(id==null)
                  id = "0";
             return Integer.parseInt(id);
        } catch (Exception e) {
            throw new Exception("Error expedientesEnTramite " + e);
        }
    }
	
	public int stadoexpedientesConIngresofam(Bnchf01Persona Bnchf01Persona) throws Exception{    
        try {
        	
        	String id = (String)sqlMap.queryForObject("sqlPersona.stadoexpedientesConIngresofam",Bnchf01Persona);
            if(id==null)
                  id = "0";
             return Integer.parseInt(id);
        } catch (Exception e) {
            throw new Exception("Error stadoexpedientesConIngresofam" + e);
        }
    }
	
	
	
	
	public Bnchf01Persona getPersona(Bnchf01Persona Bnchf01Persona)throws Exception{
		
			 
		List l = sqlMap.queryForList("sqlPersona.Persona",Bnchf01Persona);
		if(l!=null)if(l.size()!=0)
		Bnchf01Persona = (Bnchf01Persona)l.get(0);
		return Bnchf01Persona;
    }
	
	
	public int ExistePersona(Bnchf01Persona Bnchf01Person) throws Exception{    
        try {
        	String id = (String)sqlMap.queryForObject("sqlPersona.ExistePersona",Bnchf01Person);
            if(id==null)
            	id = "0";
            return Integer.parseInt(id);
        } catch (Exception e) {
            throw new Exception("ExistePersona: " + e);
        }
    }
	
	
	public Bnchf01Persona GuardaPersona_cli(Bnchf01Persona Bnchf01Persona) throws Exception{
		Long id = MAXIDPERSONA();
    
    	/**
    	 * Tiene una transaccion padre
    	 */
    		
    	
    		if(ExistePersona(Bnchf01Persona)==0)
    		{
    			
    			Bnchf01Persona.setF01IdPersona(id);
    			
    				sqlMap.insert("sqlPersona.GuardaPersona",Bnchf01Persona);

    		}
    		else
    		{
    			Bnchf01Persona.setF01IdPersona(new Long(ExistePersona(Bnchf01Persona)));
    		}
    		
    	
    	
    	return Bnchf01Persona;
    }
	
	
	
	public Long getEstadoParentesco(Bnchf12Familiar bnchf12Familiar) throws Exception{    
       
        	
        	
			
        	String id = (String)sqlMap.queryForObject("sqlFamiliar12.preguntaStadoParentesco",bnchf12Familiar);
            if(id==null)
                  id = "0";
             return new Long(id);
        
    }
	
	
	public void ActualizaEstadoParentesco(Bnchf12Familiar bnchf12Familiar) throws Exception {
	
		        
		        try{
		        	sqlMap.startTransaction();
		        	sqlMap.update("sqlFamiliar12.ActualizaEstadoParentesco",bnchf12Familiar);
		        	sqlMap.commitTransaction();
		        }catch(Exception e){
		        	e.printStackTrace();
		        	throw e;
		        }finally{
		        	sqlMap.endTransaction();
		        }
		      
	    }
	
	
	
	public void casado(
			Bnchf01Persona bnchf01Persona
			) throws Exception  {
	
	/**
	 * Tiene una transaccion superior
	 */
		


		            sqlMap.update("sqlPersona.casado",bnchf01Persona);
		           
		
				
	    }
	
	public int ActualizaEstadoPersona(
			Bnchf01Persona bnchf01Persona
			) throws Exception{
	
		        try {
		        	sqlMap.startTransaction();
		            sqlMap.update("sqlPersona.ActualizaEstadoPersona",bnchf01Persona);
		            sqlMap.commitTransaction();
		            return 1;
		        } catch (Exception e) {
		        	
					e.printStackTrace();
					
				 } finally {
				    sqlMap.endTransaction();
				}
		        return 0;
	    }
	
	public void ActualizadatosPersona(
	Bnchf01Persona Bnchf01Persona
	)  throws Exception {
		
	        sqlMap.update("sqlPersona.ActualizaPersona",Bnchf01Persona);
       
        
    }
	
	
	
}
